package data_structures_and_algorithms.dynamic_planning;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @ClassName Code_0032_longestValidParentheses
 * @Description: 最长得有效括号
 *
 * 给你一个只包含 '(' 和 ')' 的字符串，找出最长有效（格式正确且连续）括号子串的长度。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：s = "(()"
 * 输出：2
 * 解释：最长有效括号子串是 "()"
 * 示例 2：
 *
 * 输入：s = ")()())"
 * 输出：4
 * 解释：最长有效括号子串是 "()()"
 * 示例 3：
 *
 * 输入：s = ""
 * 输出：0
 *  
 *
 * 提示：
 *
 * 0 <= s.length <= 3 * 104
 * s[i] 为 '(' 或 ')'
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/longest-valid-parentheses
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * @Author: yongliang.ma
 * @Create_time:2022/10/28 15:47
 */
public class Code_0032_longestValidParentheses {

    public int longestValidParentheses(String s) {
        if (s.length() < 2)
            return 0;
        int pre = 0, max = 0;
        for (int i = 1; i < s.length(); i++) {
            if (s.charAt(i) == '('){
                pre = 0;
            }else {
                char compareChar = s.charAt(i - pre - 1);
                if (compareChar == '('){
                    pre += pre;
                }else {
                    pre = 0;
                }
            }
            max = Math.max(max, pre);
        }
        return max;
    }

}
